<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>珠峰培训</title>
</head>
<body>
<script src="node_modules/axios/dist/axios.min.js"></script>
<!--<script>
    /*let result = null;
    axios.get('A').then(resultA => {
        result = resultA;
        return axios.get('B');
    }).then(resultB => {
        //=>A和B都成功执行:RESULT-B是B成功后的结果
        //=>全局RESULT是A的结果
    });*/

    //=>SEND-ARY存放三个AJAX请求的PROMISE实例
    let sendAry = [
        axios.get('https://www.easy-mock.com/mock/5b0412beda8a195fb0978627/temp/list'),
        axios.get('https://www.easy-mock.com/mock/5b0412beda8a195fb0978627/temp/info'),
        axios.post('https://www.easy-mock.com/mock/5b0412beda8a195fb0978627/temp/add')
    ];
    //=>三个请求都完成才做一些事情（可以基于ALL实现）
    /*axios.all(sendAry).then(result => {
        console.log(result);//=>是一个数组，分别存储每一个请求的结果
        let [resA, resB, resC] = result;
    });*/

    /*module.exports = function spread(callback) {
        return function wrap(arr) {
            return callback.apply(null, arr);
        };
    };
    let wrap = axios.spread(() => {
    });
    axios.all(sendAry).then(axios.spread((resA, resB, resC) => {
        //=>RES-A/-B/-C分别代表三次请求的结果
        //=>原理是JS中的柯理化函数
    }));*/
</script>-->

<script>
    //=>初始化一些常用的配置项
    axios.defaults.baseURL = 'https://www.easy-mock.com/mock/5b0412beda8a195fb0978627/temp';
    axios.interceptors.response.use(result => result.data);
    axios.defaults.validateStatus = status => /^(2|3)\d{2}$/.test(status);

    //=>设置在POST请求中基于请求主体向服务器发送内容的格式，默认是RAW，项目中常用的是URL-ENCODEED格式
    axios.defaults.headers['Content-Type'] = 'appliction/x-www-form-urlencoded';
    axios.defaults.transformRequest = data => {
        //=>DATA:就是请求主体中需要传递给服务器的内容（对象）
        let str = ``;
        for (let attr in data) {
            if (data.hasOwnProperty(attr)) {
                str += `${attr}=${data[attr]}&`;
            }
        }
        return str.substring(0, str.length - 1);
    };


    // axios.defaults.validateStatus = function validateStatus(status) {
    //     //=>自定义成功失败规则：RESOLVE / REJECT（默认规则：状态码以2开头算作成功）
    //     return /^(2|3)\d{2}$/.test(status);
    // };

    /*axios.interceptors.response.use(function success(result) {
        return result.data;
    }, function error() {

    });//=>设置响应拦截器：分别在响应成功和失败的时候做一些拦截处理（在执行成功后设定的方法之前，先会执行拦截器中的方法）*/
    // axios.defaults.timeout = 3000;
    // axios.defaults.headers = {//=>自定义请求头
    //     name: 'zfpx'
    // };
    // axios.defaults.params={};//=>GET传参
    // axios.defaults.data={};//=>POST传参

    //=>使用
    /*axios.get('/list', {
        params: {
            lx: 12
        },
        headers: {xxx: 'xxx'}
    }).then(result => {
        console.log(result);
        //=>result.headers:服务器返回的响应头信息
    });*/

    //=>POST：三个参数 axios.post(url[,data][,config])
    axios.post('/add', {
        lx: 12,
        sex: 1
    }).then(result => {
        console.log(result);
    });
</script>
</body>
</html>